#include "config.h"
#include <QDir>
#include <QDebug>
#include "asyncimageview.h"
#include "settingconfig.h"
#include "log/EZQLOG.h"

Config* Config::defaultConfig()
{
    static Config *config = 0;
    if(config==0){
        config = new Config();
    }
    return config;
}

Config::Config()
{

    setTempPath(QDir::tempPath()+"/EZPlayer_");
    setCachePath(tempPath+"/caches");
    setImgCachePath(cachePath+"/imgcaches");

    AsyncImageView::defaultImgCachePath(getImgCachePath());

    setDocumentPath(QDir::homePath() + "/Documents" +"/EZPlayer_");

    _settingConfig = new SettingConfig();
    _settingConfig->loadFromFilePath(documentPath()+"/setting.data");
//    _settingConfig->loadSetting(documentPath()+"/setting.data");
//    _settingConfig->setDownLoadPath("/users/ellzu/testDown");
//    _settingConfig->saveSetting(documentPath()+"/setting.data");
    EZDebug << "tempPath:" << getTempPath() ;
    EZDebug << "documentPath:" << documentPath();

    _dataBasePath = QString(documentPath()+"/database.data");
    _dataBase = QSqlDatabase::addDatabase("QSQLITE");
    _dataBase.setDatabaseName(_dataBasePath);
    if(_dataBase.open()==false){
        EZDebug << "init dataBase fail:" << _dataBasePath;
    }else{
        EZDebug << "open dataBase success" << _dataBasePath;
    }
}

QString Config::getCachePath() const
{
    _settingConfig->Release();
    return cachePath;
}

void Config::setCachePath(const QString &value)
{
    QDir dir(value);
    if(dir.exists()==false){
        EZDebug << dir.path() <<" is not exists";
         EZDebug << "make dir:" << dir.mkdir(value);
//        QDir::mkdir(value);
    }
    cachePath = value;
}
QString Config::getImgCachePath() const
{
    return imgCachePath;
}

void Config::setImgCachePath(const QString &value)
{
    QDir dir(value);
    if(dir.exists()==false){
        dir.mkdir(value);
    }
    imgCachePath = value;
}
QString Config::getTempPath() const
{
    return tempPath;
}

void Config::setTempPath(const QString &value)
{
    QDir dir(value);
    if(dir.exists()==false){
        dir.mkdir(value);
    }
    tempPath = value;
}
QString Config::documentPath() const
{
    return _documentPath;
}

void Config::setDocumentPath(const QString &documentPath)
{
    QDir dir(documentPath);
    if(dir.exists()==false){
        dir.mkdir(documentPath);
    }
    _documentPath = documentPath;
}
SettingConfig *Config::settingConfig() const
{
    return _settingConfig;
}
QSqlDatabase Config::dataBase() const
{
    return _dataBase;
}



